package comandos.homes;

import controle.Controlador;
import dao.RepositoryBase;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelos.HomeJogador;
import modelos.Jogador;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Home implements CommandExecutor {

    private final JavaPlugin plugin;
    private final Controlador controlador;

    public Home(JavaPlugin plugin, Controlador controlador) {
        this.plugin = plugin;
        this.controlador = controlador;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof Player) {

            if (args.length != 1) {
                sender.sendMessage("Informe somente o nome da home!");
                return false;
            }

            Player player = (Player) sender;
            String nomeHome = args[0];

            try {
                Jogador jogador = controlador.getJogadorPorNome(player.getDisplayName());
                HomeJogador homeJogador = jogador.getHome(nomeHome);

                if (homeJogador.getId() == 0) {
                    player.chat("Não existe uma home com o nome: " + nomeHome + ".");
                    return false;
                } else {
                    Location location = new Location(player.getWorld(), homeJogador.getX(), homeJogador.getY(), homeJogador.getZ());
                    player.teleport(location);
                    player.chat("Transportado para home " + nomeHome + ".");
                }
            } catch (Exception ex) {
                player.chat("Erro no servidor. Tente mais tarde.");
                Logger.getLogger(RepositoryBase.class.getName()).log(Level.SEVERE, null, ex);
            }
            return true;
        } else {
            sender.sendMessage("Você precisa ser um jogador!");
        }

        return false;
    }
}
